/**
 * 封装token的签发和解析函数
 * 使用第3方中间件：jsonwebtoken
 */
const jwt=require("jsonwebtoken");

//自定义密钥，用密钥生成token,解密时要使用同样的密钥
var jwtSecret="jwt_token_secret";

//生成token(签发token)
var setToken=(uname,uid)=>{
    return new Promise((resolve,reject)=>{
        //创建token
        const token=jwt.sign({uname:uname,fg:uid},jwtSecret,{
            expiresIn:"1h"  //1h表示过期时间为1小时 
        });
        //签发token
        resolve(token);
    });
};

//验证token(解析token)
var getToken=(token)=>{
  return new Promise((resolve,reject)=>{
    if(token){
        //解析token，因为前端在token前手动添加了"Bearer"
        var info=jwt.verify(token.split(" ")[1],jwtSecret);
        resolve(info);
    }else{
        reject({error:"token为空"});
    }
  });
};

module.exports={
    setToken,
    getToken
}